#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std; 

#define N 		500
#define MAX_P	3100001

char s[N+1]; 
int res[N]; 	// 
int a[N]; 		// 
int b[N];		// 
int c[N];		// 2^(p-x)

int dump(const char *msg, int a[], int n)
{
	int i; 
	printf("%s", msg); 
	for (i=0; i<n; i++) {
		printf("%d", a[n-1-i]); 
	}
	printf("\n"); 
}

void copy(int dst[], int src[])
{
	int i; 
	for (i=0; i<N; i++) {
		dst[i] = src[i]; 
	}
}

void mul(int res[], int a[], int b[])
{
	int i, j, k; 
	
	for (i=0; i<N; i++) {
		res[i] = 0; 
	}
	for (i=0; i<N; i++) {
		for (j=0; j<N; j++) {
			k = i+j; 
			if (k>=N)
				break; 
			res[k] += a[i]*b[j]; 
		}
	}
	for (k=0, i=0; i<N; i++) {
		res[i] += k; 
		k = res[i]/10; 
		res[i] %= 10; 
	}
}

int main()
{
	int i, p, x; 

	cin>>p; 
	
	printf("%d", (int)(p*log10(2))+1); 
	x = p; 
	
	res[0] = 1; 	
	c[0] = 2; 
	while(x) {
		if (x&1) {
			copy(a, res); 		// a <== res
			mul(res, a, c); 	// res = a + b
		} 
		copy(a, c); 		// a <== c
		copy(b, c); 		// b <== c
		mul(c, a, b); 		// c <== a * b
		x>>=1; 
	}
	for (i=0; i<N; i++) {
		if ((i%50)==0)
			printf("\n"); 
		printf("%d", i!=N-1 ? res[N-1-i] : res[N-1-i]-1); 
	}
	printf("\n"); 
	return 0; 
}


